This invention relates generally to software testing, and more particularly to a method and system for testing software filters used for kernel data streaming in a multimedia environment.
A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawing hereto: Copyright(copyright) 1998, Microsoft Corporation, All Rights Reserved.
Typical multimedia systems include software modules, known as filters, that capture, transform and render streams of data. The performance of a multimedia system often hinges upon the system""s ability to quickly and accurately process large volumes of data using these software filters. In conventional systems, software filters are executed by software components executing in non-kernel mode. In order to manipulate the data, each filter often communicates the data to a device driver operating in kernel mode. Each transition by the data stream from a component executing in non-kernel mode to a component executing in kernel mode is time consuming and introduces latencies. For this reason, Microsoft introduced the concept of kernel streaming. In kernel streaming, each software filter is executed in kernel mode and is controlled by a generic software interface known as a proxy filter. As a result, the data stream need not transition from a component operating in kernel mode to a component operating in non-kernel mode. The proxy filters allow applications to communicate with the respective software filter without passing the actual data stream.
One of the difficulties in developing robust software filters for kernel streaming is that some of the filters are required to support large volumes of simultaneous data streams. For example, the Raw Channel Access (RCA) filter must support thousands of streams simultaneously over various network connections. Conventional techniques for testing software filters required the developer to configure a number of computing systems and manually test each stream. More specifically, the developer configures the test system such that one computer broadcasts a data stream while another computer receives the data stream and outputs the data using a conventional multimedia output device such as a speaker. This manual technique does not lend itself to testing many of the software filters used in kernel data streaming.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a method that accurately tests the functionality of software filters used in kernel streaming. There is also a need for such a technique that is readily scalable for testing software filters that must simultaneously support large volumes of data streams without requiring the use of multiple computers.
The above-mentioned shortcomings, disadvantages and problems are addressed by the present invention, which will be understood by reading and studying the following specification. To solve these problems, the invention provides a test method and computing system to facilitate testing the functionality and performance of software filters used to support kernel data streaming in a multimedia environment. A software component, referred to as a source module, produces an audio and/or video data stream designed to emulate a unique multimedia device such as a microphone or video camera. One or more software filters are communicatively coupled between the source module and an analysis module. The analysis module is designed to receive and analyze a data stream that is produced by the source module and is routed through the software filters for processing. The analysis module represents a video or audio output device (e.g., a speaker), but additionally quantitatively measures the rendered data stream in order to determine whether the software filters have operated properly.
In order to assess the functionality of the software filters under real-world conditions, and to facilitate testing large numbers of data streams, the invention communicatively couples the software filters via one or more virtual circuits that route the data stream to and from a network. The invention describes systems, computing methods and computer-readable media of varying scope. In addition to the aspects and advantages of the invention described in this summary, further aspects and advantages of the invention will become apparent by reference to the drawings and by reading the detailed description that follows.